The invention relates generally to software automation tools for controlling design and manufacturing processes. More particularly, the invention is a software method and system that automates the design and manufacturing process by driving multiple software application products though each application's graphical user interface. The system automates the design decision process and controls multiple software application products, running either sequentially or simultaneously and executing locally or remotely. The method and system can be used to automate any software application represented in a graphical user interface. In its present embodiment, the system and method automates design and manufacturing processes that use software application programs having a graphical user interface. In an alternative embodiment, the system and method automates the design and manufacture of electronic circuits.
Designing and manufacturing electronic circuits is a complex process. Because it is complex, the process is time consuming and costly. Rapid advances in materials and manufacturing technology require constant changes in design and manufacturing techniques. It is desirable to speed up the process to bring advanced technology products to market faster, while minimizing cost. Part of speeding up the process involves automation. While there currently exist a number of software application programs that automate individual parts of the design process, the overall design process is not automated and still requires constant manual intervention by the circuit designer. In addition, there is no automated way of building a model that represents the design process and also provides a means of executing the model to build the actual design. Being able to build a model that captures the overall resulting design can help speed up the process because it can be reused by other designers and used to educate others in the design process.
Automating design and manufacturing processes, in particular, automating the design electronic circuits is also an iterative process. First, the requirements are developed and input to one or more software design tools to create a functional description of the electronic circuit to be created. Next, the output of this step is input to tools that "implement" the circuit, that is, produce the circuit configuration of the functional description of the circuit. The functional description of the design is first synthesized to its logical elements and then to its physical implementation. The output from each phase for each part of the design can be used to run simulations to test the adequacy of the logical and physical aspects of the design with regard to function, speed, timing, size, or other criteria that are important to the operation of the circuit. Information from each phase of this process can also necessitate changes or corrections to previous steps in the process that may impact one or more subsections of the design. This process involves many individual designers and individual design tools to complete one pass of the product.
Design flow development and automation is an important way to speed up and improve the design process. Many types of software programs currently exist to automate aspects of the design process as much as possible. Most of these programs operate independently, on different computer platforms and have different operator interfaces. The data output from one tool often needs to be input to another tool and the input data needs to be precisely formulated and formatted before the parameters are passed from one tool to another. This process of capturing the data output from one tool and formatting it for use by another tool can be done by the designer either manually or by writing batch scripts that capture the data output from one software tool, convert the data to the correct format and input the converted data to another software tool. This process has to be repeated for each software tool used in the design and manufacture process. Even using batch scripts, these tools still remain stand-alone applications that execute independently and are not part of a formalized, centralized design process. Because of this, even though the existing tools may be individually automated, the overall design process model, along with the individual designer's knowledge and experience, is not automated. The process is further complicated because often many designers work together on one design, all of whom may gain their own knowledge and experience, but have to relearn other parts of the process.
Using conventional scripting to automate the actions of a software tool requires the user to learn the macro or scripting language, which are often custom or proprietary languages, associated with the tool. Because the composed scripts are textual rather than graphical, it is more difficult to understand their functionality and to make modifications. Therefore, the designer must understand and be knowledgeable not only in the design and manufacturing process, but also in the programming of multiple scripting languages. In the case of designing electronic circuits, for example, the parameters of the electronic circuit must first be defined, the software tools chosen to design the circuit, the batch script written, the input data parameters selected to be input to the tool by the batch script, and finally initialization of the script and software tool. This same process must then be repeated for each software tool used in the design process. In addition, if multiple tools are to be automated in sequence, another overall command script that invokes each software tool and its own batch script must then be constructed.
Automation of the individual software tools and the sequential activation of multiple software tools to create a "design process" is also limited because not all tools have a scripting language. Of those that do, generally only a subset of the functions of the tool may be controlled by the scripting or programmatic method of control. Often, conditional constructs to allow for different responses based on variations in input data are not available. Scripts normally initiate a process, and then operate in the background. As the user has no further control after initiation, scripts are usually run with the graphical mode of the application turned off, and no exchange of knowledge or interaction with the user occurs. Depending upon the compatibility of the software tools used, it may be impossible to use scripts to sequentially run the design process.